package co.edu.udea.herbario.dao;

import co.edu.udea.herbario.dto.Especie;

/**
 *Clase de tipo interface que contiene la declaracion de los metodos utilizados para gestionar
 * los datos de la tabla Herb_Especies entre la persistencia y la logica de la aplicacion
 *
 * @author Alejandro Areiza, Lorena Orozco, Marcela Colorado
 */
public interface EspecieDao
{
    /**
	 * Metodo que obtiene desde la tabla Herb_Especies el elemento referenciado con el codigo indicado
	 * como parametro
	 *
	 * @param codigo es el consecutivo que identifica la especie dentro del sistema
	 *
	 * @return retorna un objeto de tipo Especie
	 */
	public Especie obtenerEspecie(int codigo);

    /**
	 * Metodo para obtener de la tabla Herb_Especies el registro que corresponde al nombre de la especie,
	 * el cual es entregado como parametro
	 *
	 * @param nom es el nombre de la especie
	 *
	 * @return retorna un objeto de tipo Especie
	 */
	public Especie obtenerEspeciePorNombre(String nom);

    /**
	 * Metodo para crear un elemento dentro de la tabla Herb_Especies
	 *
	 * @param especie es un objeto de tipo Especie que contiene los datos del elemento que se desea
	 * ingresar en la tabla Herb_Especies
	 *
	 * @return retorna un entero: res = 1 si se realizo correctamente la creacion, de lo contrario
	 * res = -1
	 */
	public int crearEspecie(Especie especie);

     /**
	 * Metodo para llevar a cabo el proceso de modificacion de los datos asociados a una especie
	 *
	 * @param especie es un objeto de tipo Especie que contiene los datos del elemento que se desea
	 * modificar en la tabla Herb_Especies
	 *
	 * @return retorna un entero: res = 1 si se realizo correctamente la modificacion, de lo contrario
	 * res = -1
	 */
    public int actualizarEspecie(Especie especie);
}
